diff options
Diffstat (limited to 'pages/api/notes/[id].js')
-rw-r--r-- | pages/api/notes/[id].js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/pages/api/notes/[id].js b/pages/api/notes/[id].js new file mode 100644 index 0000000..58e458f --- /dev/null +++ b/pages/api/notes/[id].js @@ -0,0 +1,70 @@ +import dbConnect from 'configs/dbConnect' +import withSession from 'hocs/withSession' +import NoteList from 'models/NoteList' +import Note from 'models/Note' + +export default withSession(async (req, res) => { + const {id: _id} = req.query + await dbConnect() + + switch (req.method) { + case 'GET': + try { + const user = req.session.get('user') + + if (!user || !user?.isVerified || !_id ) { + throw new Error('Something went wrong') + } + + const note = await Note.getNote(_id) + + if (!note) { + throw new Error('Something went wrong') + } + + res.status(200).json(note) + } catch (error) { + console.log(error) + res.status(400).json({error: true}) + } + break + case 'DELETE': + try { + const user = req.session.get('user') + + if (!user || !user?.isVerified || !_id) { + throw new Error('Something went wrong') + } + + const noteId = await NoteList.getNoteId(user.noteList, _id) + if ( !noteId) throw new Error('Something went wrong') + + await Note.findByIdAndDelete(noteId) + const {notes} = await NoteList.removeNote(user.noteList, _id) + + res.status(200).json(notes) + } catch (error) { + console.log(error) + res.status(400).json([]) + } + break + case 'PUT': + try { + const user = req.session.get('user') + const {title, noteId, content} = req.body + + if (!user || !user?.isVerified || !_id || !content) { + throw new Error('Something went wrong') + } + + await Note.updateNote(noteId, content) + const {notes} = await NoteList.updateList(user.noteList, noteId, title) + + res.status(200).json(notes) + } catch (error) { + console.log(error) + res.status(400).json([]) + } + break + } +}) |